export interface INode<T> {
  value: T;
  next: INode<T> | undefined;
}

export interface IList<T> {
  append(element: T): void;
  insert(position: number, element: T): INode<T> | undefined;
  get(position: number): INode<T> | undefined;
  indexOf(element: T): number;
  update(position: number, element: T): INode<T> | undefined;
  removeAt(position: number): INode<T> | undefined;
  remove(element: T): INode<T> | undefined;
  isEmpty(): boolean;
  get size(): number;
  toString(): string;
}
